package com.offdissys.common.redis.service;

import java.util.Map;
import java.util.Properties;

/**
 * @author ZhangHaiWen
 * @title: CacheService
 * @projectName mybatisplustest
 * @description: 缓存接口实现
 * @date 2021/11/2610:12
 */
public interface CacheService {

    /**
     * 设置时间限制的redis 秒
     * @param key
     * @param value
     * @param seconds
     */
    Boolean expire(Object key, Object value, long seconds);

    /**
     * 设置过期时间 秒
     * @param key
     * @param seconds
     */
    Boolean expire(Object key, long seconds);

    /**
     * 判断是否拥有key
     * @param key
     * @return
     */
    Boolean hasKey(Object key);

    /**
     * 根据key获取值
     * @param key
     * @return
     */
    Object get(Object key);

    /**
     * 修改某个值
     * @param key
     * @param value
     */
    Boolean set(Object key, Object value);

    /**
     * 获取剩余时间
     * @param key
     * @return
     */
    long getExpireTime(Object key);

    /**
     * 删除一个key
     * @param key
     */
    long del(Object key);

    /**
     * 批量插入
     * @param map
     */
    void batchSet(Map<Object, Object> map);

    /**
     * 清空redis缓存
     */
     void delAll();

    /**
     * 获取redis key 信息
     * @return
     */
    int keySpaceCount();

    /**
     * 获取内存信息
     * @return
     */
    Properties info();

    /**
     * 基于jedisson分布式锁 加锁
     * @return
     */
    void lock(String lockName);

    /**
     * 基于jedisson分布式锁 释放锁
     * @return
     */
    void releaseLock(String lockName);
}
